#ifndef _WITH_H_
#define _WITH_H_
#include "ast/stmtType.h"
#include "ast/WithItemType.h"
#include "ast/suiteType.h"
class IVisitor;
class With;
typedef QSharedPointer<With> WithPtr;

class With: public stmtType
{
public:
    explicit With(const WithItemTypeList& with_item, const suiteTypePtr& body, int nodeId=-1);
    virtual ~With();
    
    
    WithItemTypeList with_item();
    void setWith_item(const WithItemTypeList& with_item);
    
    suiteTypePtr body();
    void setBody(const suiteTypePtr& body);
    
    
    virtual QString type() const;
    virtual QString toString() const;
    virtual void accept(IVisitor* visitor, const SimpleNodePtr& node);
    virtual void traverse(IVisitor* visitor);
private:
    WithItemTypeList _with_item;
    suiteTypePtr _body;
};




#endif